﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Autocentro.Entities;
using Microsoft.Practices.Unity;
using Autocentro.Respository;

namespace Autocentro.BussinesLogic
{
    public class MarcaBL : IMarcaBL
    {
        [Dependency]
        public IMarcaRepository MarcaRepository { get; set; }

        public List<MARCA> GetAllFromMarcas()
        {
            return MarcaRepository.GetAllFromMarcas();
        }

        public List<MARCA> GetAFromMarcasByCriterio(string criterio)
        {
            return MarcaRepository.GetAFromMarcasByCriterio(criterio);
        }

        public MARCA GetFromMarcasByID(int id)
        {
            return MarcaRepository.GetFromMarcasByID(id);
        }

        public void AddMarca(MARCA marca)
        {
            var duplicidad = MarcaRepository.ExiteDuplicidad(marca.Descripcion,marca.Id);
            if (!duplicidad)
            {
                var msg = "";
                var ok = marca.Validate(out msg);
                if (ok)
                {
                    MarcaRepository.AddMarca(marca);
                }
                else
                {
                    throw new Exception(msg);
                }
            }
            else
            {
                var error = string.Format("Marca ya registrada" + " " + "\n" + marca.Descripcion);
                throw new Exception(error);
            }
            
        }

        public void UpdateMarca(MARCA marca)
        {
            var duplicidad = MarcaRepository.ExiteDuplicidad(marca.Descripcion,marca.Id);
            if (!duplicidad)
            {
                var msg = "";
                var ok = marca.Validate(out msg);
                if (ok)
                {
                    MarcaRepository.UpdateMarca(marca);
                }
                else
                {
                    throw new Exception(msg);
                }
            }
            else
            {
                var error = string.Format("Marca ya registrada" + " " + "\n" + marca.Descripcion);
                throw new Exception(error);
            }
        }

        public void RemoveMarca(int id)
        {
            MarcaRepository.RemoveMarca(id);
        }
    }
}
